<?php
/**
 * HaB
 *
 * Gestor de contenidos de alta disponibilidad
 *
 * @package		HaB
 * @author		Oscar M. Lage <r0sk10@gmail.com>
 * @author		Marcos B.L. <marcosbl@gmail.com>
 * @version		1.0
 */

/**
 * database.php
 *
 * Colección de funciones para gestionar la conexión a BBDD
 *
 * @package		HaB
 * @version		1.0
 */

// Debug
$consultas = array();
// Debug

/**
 * Conecta con la base de datos y ejecuta el 'hack de utf-8'
 */
function db_connect()
{
	global $config;

	$link = mysql_connect($config['hostdb'], $config['userdb'], $config['passdb']);
	mysql_select_db($config['namedb']);

	// Hack para poner los resultados en UTF-8
	mysql_query("SET NAMES 'utf8'", $link);
	mysql_query("SET CHARACTER_SET 'utf8'", $link);
	
	return $link;
}

/**
 * Ejecuta una consulta a la base de datos, también almacena
 * valores en un array para DEBUG
 */
function db_query($sql, $comentario = '')
{
	global $consultas;
	
	// Debug
	$t_sql_inicial = round(microtime(), 6);
	$res = mysql_query($sql, LINK);
	$t_sql_final = round(microtime(), 6);
	$t_sql = $t_sql_final - $t_sql_inicial;
	$con ['comentario'] = $comentario;
	$con ['consulta'] = $sql;
	$con ['tiempo'] = $t_sql;
	array_push($consultas, $con);
	// Debug

	return $res;
}

/**
 * Devuelve un fetch_array del resultado pasado
 */
function db_fetch ($res)
{
	return mysql_fetch_array($res,  MYSQL_ASSOC);
}

/**
 * Función que hace un fetch de todos los contenidos a un array
 */
function db_fetch_all ($res, $name)
{
	$e = array();
	$var = array();
	$dat = mysql_fetch_array($res, MYSQL_ASSOC);
	do
	{
		array_push($e, $dat);
	}while($dat = mysql_fetch_array($res, MYSQL_ASSOC));
	
	$var = array ($name => $e);
	return $var;
}


/**
 * Devuelve posts, categorias y tags
 */
function db_fetch_all_posts ($res, $name)
{
	$e = array();
	$t = array();
	$c = array();
	$nc = array();
	$var = array();
	$dat = mysql_fetch_array($res, MYSQL_ASSOC);
	do
	{
		array_push($e, $dat);
		
		// Tags
		$query2 = "SELECT tags.id, tags.tag, tags.slug FROM tags
			INNER JOIN posts_tags
			ON tags.id = posts_tags.tag_id AND posts_tags.post_id={$dat['id']}";
		$res2 = mysql_query($query2);
		$tags = db_fetch_all($res2, 'tags');
		array_push($t, $tags);
		
		// Categor√≠as
		$query3 = "SELECT categories.id, categories.category, categories.slug FROM categories
			INNER JOIN posts_categories
			ON categories.id = posts_categories.category_id AND posts_categories.post_id={$dat['id']}";
		$res3 = mysql_query($query3);
		$cats = db_fetch_all($res3, 'categories');
		array_push($c, $cats);
		
	}while($dat = mysql_fetch_array($res, MYSQL_ASSOC));
	
	$var = array ($name => $e, 'tags' => $t, 'categories' => $c);
	
	//mvar_dump($var);
	
	return $var;
}


/**
 * Devuelve el número de registros afectados
 */
function db_num_rows ($res)
{
	return mysql_num_rows($res);
}


/**
 * Cierra la conexión con la base de datos
 *
 */
function db_close()
{}

// Ejecutamos el conector para tener conexión siempre
define('LINK', db_connect());

?>
